.TH std::tmpnam 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::tmpnam \- std::tmpnam

.SH Synopsis
   Defined in header <cstdio>
   char* tmpnam( char* filename );

   Creates a unique filename that does not name a currently existing file, and stores
   it in the character string pointed to by filename. The function is capable of
   generating up to TMP_MAX of unique filenames, but some or all of them may already be
   in use, and thus not suitable return values.

   std::tmpnam modifies static state and is not required to be thread-safe.

.SH Parameters

              pointer to the character array capable of holding at least L_tmpnam
   filename - bytes, to be used as a result buffer. If a null pointer is passed, a
              pointer to an internal static buffer is returned

.SH Return value

   filename if filename was not a null pointer. Otherwise a pointer to an internal
   static buffer is returned. If no suitable filename can be generated, a null pointer
   is returned.

.SH Notes

   Although the names generated by std::tmpnam are difficult to guess, it is possible
   that a file with that name is created by another process between the moment
   std::tmpnam returns and the moment this program attempts to use the returned name to
   create a file. The standard function std::tmpfile and the POSIX function mkstemp do
   not have this problem (creating a unique directory using only the standard C library
   still requires the use of tmpnam).

   POSIX systems additionally define the similarly named function tempnam, which offers
   the choice of a directory (which defaults to the optionally defined macro P_tmpdir).

.SH Example


// Run this code

 #include <cstdio>
 #include <iostream>
 #include <string>

 int main()
 {
     std::string name1 = std::tmpnam(nullptr);
     std::cout << "temporary file name: " << name1 << '\\n';

     char name2[L_tmpnam];
     if (std::tmpnam(name2))
         std::cout << "temporary file name: " << name2 << '\\n';
 }

.SH Possible output:

 temporary file name: /tmp/fileDjwifs
 temporary file name: /tmp/fileEv2bfW

.SH See also

   tmpfile             creates and opens a temporary, auto-removing file
                       \fI(function)\fP
   temp_directory_path returns a directory suitable for temporary files
   \fI(C++17)\fP             \fI(function)\fP
   C documentation for
   tmpnam
